using System;
using EnvDTE;

namespace NUnitGenAddIn.Core.Test
{
    /// <summary>
    /// Mock Document
    /// </summary>
	public class MockDocument : Document
	{
		private ProjectItem _projectItem;

        /// <summary>
        /// Sets the project item.
        /// </summary>
        /// <param name="value">The value.</param>
		public void SetProjectItem(ProjectItem value)
		{
			_projectItem = value;
		}

		#region Document Members

        /// <summary>
        /// Activates this instance.
        /// </summary>
		public void Activate()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the active window.
        /// </summary>
        /// <value>The active window.</value>
		public Window ActiveWindow
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Clears the bookmarks.
        /// </summary>
		public void ClearBookmarks()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Closes the specified save.
        /// </summary>
        /// <param name="Save">The save.</param>
		public void Close(vsSaveChanges Save)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the collection.
        /// </summary>
        /// <value>The collection.</value>
		public Documents Collection
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the DTE.
        /// </summary>
        /// <value>The DTE.</value>
		public DTE DTE
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the extender CATID.
        /// </summary>
        /// <value>The extender CATID.</value>
		public string ExtenderCATID
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the extender names.
        /// </summary>
        /// <value>The extender names.</value>
		public object ExtenderNames
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the full name.
        /// </summary>
        /// <value>The full name.</value>
		public string FullName
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the size of the indent.
        /// </summary>
        /// <value>The size of the indent.</value>
		public int IndentSize
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the kind.
        /// </summary>
        /// <value>The kind.</value>
		public string Kind
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets or sets the language.
        /// </summary>
        /// <value>The language.</value>
		public string Language
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Marks the text.
        /// </summary>
        /// <param name="Pattern">The pattern.</param>
        /// <param name="Flags">The flags.</param>
        /// <returns></returns>
		public bool MarkText(string Pattern, int Flags)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the name.
        /// </summary>
        /// <value>The name.</value>
		public string Name
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// News the window.
        /// </summary>
        /// <returns></returns>
		public Window NewWindow()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Objects the specified model kind.
        /// </summary>
        /// <param name="ModelKind">Kind of the model.</param>
        /// <returns></returns>
		public object Object(string ModelKind)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the path.
        /// </summary>
        /// <value>The path.</value>
		public string Path
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Prints the out.
        /// </summary>
		public void PrintOut()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the project item.
        /// </summary>
        /// <value>The project item.</value>
		public ProjectItem ProjectItem
		{
			get { return _projectItem; }
		}

        /// <summary>
        /// Gets or sets a value indicating whether [read only].
        /// </summary>
        /// <value><c>true</c> if [read only]; otherwise, <c>false</c>.</value>
		public bool ReadOnly
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Redoes this instance.
        /// </summary>
        /// <returns></returns>
		public bool Redo()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Replaces the text.
        /// </summary>
        /// <param name="FindText">The find text.</param>
        /// <param name="ReplaceText">The replace text.</param>
        /// <param name="Flags">The flags.</param>
        /// <returns></returns>
		public bool ReplaceText(string FindText, string ReplaceText, int Flags)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Saves the specified file name.
        /// </summary>
        /// <param name="FileName">Name of the file.</param>
        /// <returns></returns>
		public vsSaveStatus Save(string FileName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="MockDocument"/> is saved.
        /// </summary>
        /// <value><c>true</c> if saved; otherwise, <c>false</c>.</value>
		public bool Saved
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the selection.
        /// </summary>
        /// <value>The selection.</value>
		public object Selection
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the size of the tab.
        /// </summary>
        /// <value>The size of the tab.</value>
		public int TabSize
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the type.
        /// </summary>
        /// <value>The type.</value>
		public string Type
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Undoes this instance.
        /// </summary>
        /// <returns></returns>
		public bool Undo()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the windows.
        /// </summary>
        /// <value>The windows.</value>
		public Windows Windows
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Get_s the extender.
        /// </summary>
        /// <param name="ExtenderName">Name of the extender.</param>
        /// <returns></returns>
		public object get_Extender(string ExtenderName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		#endregion
	}
}